import { api } from './http/request';//此处是我的项目通用接口调用方法的路径  更换即可
import { CachePool, generateKey, defaultTimeout } from './cache';

declare interface AnyObject {
  [key: string]: any;
}



// 示例接口调用
export const httpRequest = async ({
  url = '',
  payload = {},
}: {
  url?: string;
  payload?: AnyObject;
}) => {
  // 生成key
  const key = generateKey(url, payload) as string;
  // 获得数据
  let data = CachePool.getCacheData(key);
  if (!data) {
    //此处api是具体项目中通用接口调用的方法封装 相当于axios
    const res = await api({
      url,
      data: payload,
    });
    // 将该接口的唯一key放入缓存池 使用 10s 缓存，10s之后再次get就会 获取null 而从服务端继续请求
    CachePool.setCacheData(key, res, defaultTimeout);
    // 也可以返回 -> return CachePool.pool.get(`${url}:::${JSON.stringify(payload)}`)?.data;
    return res?.data;
  } else {
    return data;
  }
};
